package pe.gob.osinergmin.interfase_siaf.dac.certificacion.dao.impl;

import java.util.List;

import javax.sql.DataSource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;
import org.springframework.stereotype.Repository;

import pe.gob.osinergmin.interfase_siaf.dac.certificacion.dao.CertCabDao;
import pe.gob.osinergmin.interfase_siaf.dac.domain.interfase.CertCab;

@Repository("certCabDao")
public class CertCabDaoImpl implements CertCabDao {
	
	    private final Log logger = LogFactory.getLog(getClass());
	 	
		
		private NamedParameterJdbcTemplate jdbcParameterTemplateInterfase;	
		//private JdbcTemplate jdbcTemplateInterfase;		
		
		
		@Autowired
		public void SetDataSource(DataSource dataSourceInterfase){
		//	this.jdbcTemplateInterfase = new JdbcTemplate(dataSourceInterfase);
			this.jdbcParameterTemplateInterfase = new NamedParameterJdbcTemplate(dataSourceInterfase);		
		}
		
		
		/**DECLARACION DE SQL**/	
		 private static final String SQL_SELECT_SECUENCIAL =
					" SELECT COUNT(secuencial) FROM CERT_CAB where secuencial=:secuencial ";
		 
		 /**para consultar datos del cert_cab por el secuencial*/
			private static final String SQL_SELECT_CERTCAB_X_SECUENCIAL="SELECT * FROM CERT_CAB WHERE secuencial=:secuencial";
		
		/**IMPLEMENTACION DE METODOS*/
		 @Override
		 public int verificarSecuencialCab(CertCab c) throws Exception{
			 logger.info("Ingresando a verificar el secuencial cert_cab"); 
			 SqlParameterSource parameters = new BeanPropertySqlParameterSource(c);
			 return this.jdbcParameterTemplateInterfase.queryForInt(SQL_SELECT_SECUENCIAL, parameters);
		 }
		 

		 /**metodo parqa consultar datos del intf_cab por el secuencial*/
		 
		 @Override
	     public List<CertCab> consultarDatosXSecuencial(CertCab c) throws Exception {		 
				SqlParameterSource parameters = new BeanPropertySqlParameterSource(c);			
				RowMapper<CertCab> lista = ParameterizedBeanPropertyRowMapper.newInstance(CertCab.class);		
			    return this.jdbcParameterTemplateInterfase.query(SQL_SELECT_CERTCAB_X_SECUENCIAL, parameters, lista);
		  }    

}
